package org.wlc.demov3;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.wlc.demov1Impl.AuthInfo;

import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * @author 王立朝
 * @date 2022/5/17
 * @description: 责任链路抽象类
 */
public abstract class AuthLink {


    private static final Logger logger = LoggerFactory.getLogger(AuthLink.class);
    /**
     * 时间格式化
     */
    protected SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    /**
     * 级别用户ID
     */
    protected String levelUserId;
    /**
     * 级别用户姓名
     */
    protected String levelUserName;

    /**
     * 责任链
     */
    private AuthLink next;

    public AuthLink(String levelUserId, String levelUserName) {
        this.levelUserId = levelUserId;
        this.levelUserName = levelUserName;
    }

    /**
     * 通过`next`方式获取下一个链路需要处理的节点。
     * @return
     */
    public AuthLink next(){
        return next;
    }

    public AuthLink appendNext(AuthLink next){
        this.next = next;
        return this;

    }

    /**
     * 这是每一个实现者必须实现的类，不同的审核级别处理不同的业务
     * @param uid
     * @param orderId
     * @param authDate
     * @return
     */
    public abstract AuthInfo doAuth(String uid, String orderId, Date authDate);
}
